package com.patterns.proxy.dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 使用JDK自带的代理接口来实现动态代理
 * @author huangke
 *
 */
public class StarHandler implements InvocationHandler{
	
	private Star star;

	public StarHandler(Star star) {
		this.star = star;
	}
	
	/**
	 * 使用JDK Proxy动态生成的代理对象调用Star接口的方法都会进入此方法
	 * 在此方法中做代理的逻辑控制
	 */
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		Object result = null;
		
		System.out.println("代理签合同");
		
		if (method.getName().equals("sing")) {
			result = method.invoke(star, args);
		}
		
		System.out.println("代理收款");
		return result;
	}

}
